home *** CD-ROM | disk | FTP | other *** search
- ! PSI PowerModem III & IV 7/26/93 SDH
- !
- ! 'mlts' resource info for this modem:
- ! byte 1 == 01 -> modem HAS builtin reliability protocols
- ! byte 2 == 00 -> reserved by Apple
- ! byte 3 == 21 -> max hex chars in varstr 7 (33 dec)
- ! byte 4 == 21 -> max hex chars in varstr 8
- ! byte 5 == 21 -> max hex chars in varstr 9
- !
- @ORIGINATE
- @ANSWER
- !
- ! Set up the modem - label range is 1-10
- !
- ! Mac talks to the modem at 19200 bps.
- serreset 19200, 0, 8, 1
- !
- ! reset serial port for hardware options
- HSReset 0 0 0 0 0 0
- !
- settries 0
- ! pause to give the modem time to power up
- pause 20
- !
- @LABEL 1
- flush
- matchclr
- matchstr 1 3 "OK\13\10"
- ! &f - recall factory settings
- ! &d0 - ignore DTR from DTE
- ! &k3 - enable CTS/RTS flow control
- ! w2 - Connect result code reports modem speed
- ! \k0 - Enter command state but do not send break
- ! \j0 - Disable auto port rate adjust
- ! s7=120 - To allow for an international call
- ! S0=0 - Don't answer calls
- ! E0 - Turn command echo off
- ! \N3 - v42 autoreliable mode
- ! %C0 - compression disabled
- ! S95=12 - (dec) gives PROTOCOL: and CARRIER result codes
- write "AT&f&d0&k3w2\\k0\\j0s7=120S0=0E0\\n3%C0S95=12\13"
- matchread 30
- inctries
- iftries 2 71
- ! Modem is not responding, send a short break.
- SBreak
- jump 1
- !
- @LABEL 3
- ! Modem responding & configured.
- ! Determine if reliable link is requested.
- !
- ! If modem mnp10 link requested (var 4 == 2) then jump label 4
- ! If modem v42 link requested (var 4 == 1) then jump label 5
- ! If no modem v42 link requested (var 4 == 0) [same as ARA 1.0] then jump label 9
- !
- ifstr 4 4 "2"
- ifstr 4 5 "1"
- ifstr 4 9 "0"
- !
- ! Else invalid value in var 4, exit with error
- jump 76
- !
- !
- @LABEL 4
- ! Reliable MNP10 link is requested
- note "This modem does not support MNP 10." 3
- pause 20
- note "Please contact PSI technical support." 3
- pause 20
- jump 7
- !
- !
- @LABEL 5
- ! Reliable v42 link is requested. OK for LAP-M -> MNP 4.
- matchclr
- matchstr 1 7 "OK\13\10"
- ! \N3 - v42 autoreliable mode
- write "AT\\N3\13"
- matchread 300
- jump 71
- !
- @LABEL 7
- ! If we DID support compression in the modem, this is where it would go.
- !
- @LABEL 9
- ! If speaker on flag is true, jump to label 13. Else turn off the speaker.
- ifstr 2 13 "1"
- pause 5
- matchclr
- matchstr 1 13 "OK\13\10"
- write "ATM0\13"
- matchread 30
- jump 71
- !
- ! Modem ready, so enable answer or dial mode - label range is 11-30
- ! Determine if answer or originate mode.
- !
- @LABEL 13
- pause 5
- ifANSWER 62
- !
- ! Dial type dispatch
- !
- ! Normal dialing (parm 6 == 0) jump to 19
- ! Blind dialing (parm 6 == 1) jump to 17
- ! Manual dialing (parm 6 == 2) jump to 15
- !
- ifstr 6 19 "0"
- ifstr 6 17 "1"
- ifstr 6 15 "2"
- !
- ! Else invalid value in var 6, exit with error
- jump 76
- !
- @label 15
- ASK 2 "Pick up the phone & dial ^1. Hit OK when the phone rings, then hangup." 80
- note "Manual dialing initiated..." 3
- ! X1 to ignore dialtone & busy for manual dialing, D to dial
- write "ATX1D \13"
- jump 32
- !
- @label 17
- note "Dialing without dialtone." 3
- matchclr
- matchstr 1 19 "OK\13\10"
- ! X1 to ignore dialtone & busy for blind dialing
- write "ATX1\13"
- matchread 30
- jump 71
- !
- ! This is where we break up long dialstrings - label range is 19 - 27.
- !
- @label 19
- ! Parameter 1 contains the full dialstring from the connection document.
- ! Parameter 3 contains "P" for pulse & "T" for tone dialing.
- ! Parameters 7, 8 & 9 contain the dial string broken up into
- ! lengths which the modem's command buffer can handle as defined
- ! by the 'mlts' resource.
- !
- note "Dialing ^1." 3
- !
- ! If parm 8 is blank goto sending parm 7 only
- ! else send parm 7 with semicolon
- ifstr 8 25 " "
- !
- matchclr
- matchstr 1 21 "OK\13\10"
- write "ATD^3^7;\13"
- matchread 400
- jump 71
- !
- ! If parm 9 is blank goto sending param 8
- ! else send param 8 with semicolon & param 9
- @label 21
- ifstr 9 27 " "
- !
- matchclr
- matchstr 1 23 "OK\13\10"
- write "ATD^3^8;\13"
- matchread 400
- jump 71
- !
- ! Send final parameter string then wait for
- ! connect message.
- !
- @label 23
- write "ATD^3^9\13"
- jump 32
- !
- @label 25
- write "ATD^3^7\13"
- jump 32
- !
- @label 27
- write "ATD^3^8\13"
- jump 32
- !
- ! Connecting - label range is 31-60
- !
- @LABEL 32
- matchclr
- matchstr 1 34 "CONNECT 1200\13\10"
- matchstr 2 35 "CONNECT 2400\13\10"
- matchstr 3 36 "CONNECT 4800\13\10"
- matchstr 4 37 "CONNECT 7200\13\10"
- matchstr 5 38 "CONNECT 9600\13\10"
- matchstr 6 39 "CONNECT 12000\13\10"
- matchstr 7 40 "CONNECT 14400\13\10"
- !
- matchstr 8 68 "RING\13\10"
- matchstr 9 72 "NO DIALTONE\13\10"
- matchstr 10 73 "NO CARRIER\13\10"
- matchstr 11 73 "ERROR\13\10"
- matchstr 12 74 "BUSY\13\10"
- matchstr 13 75 "NO ANSWER\13\10"
- !
- matchstr 14 44 "PROTOCOL: NONE\13\10"
- !matchstr ? 45 "PROTOCOL: MNP\13\10"
- !matchstr ? 46 "PROTOCOL: MNP2\13\10"
- !matchstr ? 47 "PROTOCOL: MNP3\13\10"
- matchstr 15 48 "PROTOCOL: MNP\13\10"
- matchstr 16 49 "PROTOCOL: LAP-M\13\10"
- matchstr 17 50 "PROTOCOL: ALT - CELLULAR\13\10"
- !
- matchread 1200
- ! If in ANSWER mode, loop back.
- ! else if in ORIGINATE, the modem has timed out.
- ifANSWER 32
- jump 71
- !
- ! This modem has been setup to do CTS handshaking,
- ! and we assume that a CTS handshaking cable is being used,
- ! so we leave the serial port set to 19,200 bps.
- !
- @LABEL 34
- note "Communicating at 1200 bps." 2
- CommunicatingAt 1200
- jump 58
- !
- @LABEL 35
- note "Communicating at 2400 bps." 2
- CommunicatingAt 2400
- jump 58
- !
- @LABEL 36
- note "Communicating at 4800 bps." 2
- CommunicatingAt 4800
- jump 58
- !
- @LABEL 37
- note "Communicating at 7200 bps." 2
- CommunicatingAt 7200
- jump 58
- !
- @LABEL 38
- note "Communicating at 9600 bps." 2
- CommunicatingAt 9600
- jump 58
- !
- @LABEL 39
- note "Communicating at 12000 bps." 2
- CommunicatingAt 12000
- jump 58
- !
- @LABEL 40
- note "Communicating at 14400 bps." 2
- CommunicatingAt 14400
- jump 58
- !
- ! Reliable link connections.
- ! Tell ARA with USERHOOK 2 that a reliable modem link has been established.
- !
- @LABEL 44
- ! no reliable link established
- jump 32
- !
- @LABEL 45
- note "MNP reliable link established." 3
- userhook 2
- jump 32
- !
- @LABEL 46
- note "MNP2 reliable link established." 3
- userhook 2
- jump 32
- !
- @LABEL 47
- note "MNP3 reliable link established." 3
- userhook 2
- jump 32
- !
- @LABEL 48
- note "MNP reliable link established." 3
- userhook 2
- jump 32
- !
- @LABEL 49
- note "LAP-M reliable link established." 3
- userhook 2
- jump 32
- !
- @LABEL 50
- note "MNP10 reliable link established." 3
- userhook 4
- jump 32
- !
- @LABEL 58
- ! set serial port for hardware CTS handshake
- HSReset 0 1 0 0 0 0
- !
- ! Connection established. In ORIGINATE mode pause before exit.
- !
- ifANSWER 59
- pause 30
- @LABEL 59
- exit 0
- !
- ! @ANSWER
- ! Set the modem to answer on 1st ring - label range is 61-70
- !
- @LABEL 62
- matchclr
- matchstr 1 32 "OK\13\10"
- write "ATS0=1\13"
- matchread 30
- jump 71
- !
- ! RING entry point
- ! If ORIGINATE mode return to waiting for input.
- ! Else claim the serial port and return.
- !
- @LABEL 68
- ifORIGINATE 32
- userhook 1
- note "Answering call..." 2
- jump 32
- !
- ! Error messages - label range is 71-100
- !
- ! Modem Not Responding
- @LABEL 71
- exit -6019
- !
- ! No Dial Tone
- @LABEL 72
- exit -6020
- !
- ! No Carrier or Error
- @LABEL 73
- exit -6021
- !
- ! Busy
- @LABEL 74
- exit -6022
- !
- ! No Answer
- @LABEL 75
- exit -6023
- !
- ! varstring invalid value
- @LABEL 76
- exit -6027
- !
- @LABEL 80
- exit -6008
- !
- ! Hang up the modem - label range is 101-120
- !
- @HANGUP
- @LABEL 102
- flush
- settries 0
- HSReset 0 0 0 0 0 0
- @LABEL 105
- !
- ! Drop the modem into command mode with a short break.
- ! Repeat hangup command and escape sequence 3 times max.
- !
- SBreak
- @LABEL 108
- pause 10
- flush
- matchclr
- matchstr 1 111 "NO CARRIER\13\10"
- matchstr 2 111 "OK\13\10"
- matchstr 3 111 "ERROR\13\10"
- write "ATH\13"
- matchread 30
- inctries
- iftries 3 71
- ! no response, try escape sequence
- matchclr
- matchstr 1 108 "OK\13\10"
- pause 11
- write "+++"
- pause 11
- matchread 15
- jump 105
- !
- ! Recall factory settings.
- !
- @LABEL 111
- pause 15
- matchclr
- matchstr 1 114 "OK\13\10"
- write "AT&f\13"
- matchread 30
- jump 71
- !
- @LABEL 114
- exit 0
- !
- ! Labels 121-128 are reserved for future emergency hacks
- !